﻿var ns = namespace("kaskelot.sp.ui");

ns.bemanningvaldistrikt = function () {
	var cookieName = "valdistriktsearch";

	function init() {
		var c = kaskelot.sp.ui.cookies.getCookie(cookieName);
		if (c != undefined) {
			$("#ValdistriktValkretsDropDownList").val(c.valkretsId);
			$("#ValdistriktForsamlingDropDownList").val(c.forsamlingId);
			$("#StatusDropDownList").val(c.status);
			getList();
		}

		$("#title-container").html("Bemanning");
		$("#bemanningvaldistrikt-container .chzn-select-deselect").chosen({ allow_single_deselect: true, disable_search: true });

		$("#bemanningvaldistrikt-container #ValdistriktValkretsDropDownList").change(
			function () {
				getForsamlingar();
			}
		);

		$("#bemanningvaldistrikt-container #valdistrikt-clear-button").click(
			function () {
				$("#ValdistriktValkretsDropDownList").val("").trigger("liszt:updated");
				$("#ValdistriktForsamlingDropDownList").val("").trigger("liszt:updated");
				$("#StatusDropDownList").val("").trigger("liszt:updated");
			}
		);

		$("#bemanningvaldistrikt-container #valdistrikt-search-button").click(
			function () {
				getList();
			}
		);

		$("#bemanningvaldistrikt-input-container").keypress(function (event) {
			if (event.which == 13) {
				getList();
			}
		});

		$("#check-all").click(function () {
			$("#valdistrikt-search-results tbody input").prop("checked", $("#check-all").prop("checked"));
		});
	}

	function getList() {
		// Parametrar
		var valkrets = $("#ValdistriktValkretsDropDownList").val();
		var forsamling = $("#ValdistriktForsamlingDropDownList").val();
		var status = $("#StatusDropDownList").val();

		var data = { valkretsId: valkrets, forsamlingId: forsamling, status: status };
		kaskelot.sp.ui.cookies.setCookie(cookieName, data);

		$("#bemanningvaldistrikt-container").block({ message: "" });

		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientBemanningService.svc/ValdistriktSearch",
			type: "GET",
			data: data,
			processData: true,
			cache: false,
			success:
				function (data) {
					if (!data.ValdistriktSearchResult.HasError) {
						$("#valdistrikt-search-results tbody").html(
							$("#valdistrikt-search-template").render(data.ValdistriktSearchResult.Data)
						);
					}
					$("#bemanningvaldistrikt-container").unblock();
				},
			error:
				function (xhr) {
					$("#bemanningvaldistrikt-container").unblock();
					kaskelot.sp.ui.prompts.showErrorPrompt(xhr.responseText);
				}
		});
	}

	function getForsamlingar() {
		// Parametrar
		var valkrets = $("#ValdistriktValkretsDropDownList").val();
		var list = $("#ValdistriktForsamlingDropDownList");

		$("#ValdistriktForsamlingDropDownList_chzn").block({ message: "" });

		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientByggnadService.svc/GetForsamlingar",
			type: "GET",
			data: { valkretsId: valkrets },
			processData: true,
			success:
				function (data) {
					if (!data.GetForsamlingarResult.HasError) {
						var v = document.getElementById("ValdistriktForsamlingDropDownList");
						v.innerHTML = "";

						for (var i = 0; i < data.GetForsamlingarResult.Data.length; i++) {
							var opt = document.createElement("option");
							opt.value = data.GetForsamlingarResult.Data[i].ForsamlingId;
							opt.text = data.GetForsamlingarResult.Data[i].ForsamlingNamn;

							v.options.add(opt, 0);
						}

						var x = document.createElement("option");
						v.options.add(x, 0);

						v.selectedIndex = -1;

						list.trigger("liszt:updated");
					}
					$("#ValdistriktForsamlingDropDownList_chzn").unblock();
				},
			error:
				function (xhr) {
					$("#ValdistriktForsamlingDropDownList_chzn").unblock();
					kaskelot.sp.ui.prompts.showErrorPrompt(xhr.responseText);
				}
		});
	}

	function getSelectedValue() {
		var val = [];
		$("#valdistrikt-search-results tbody input:checked").each(function (i) {
			val[i] = $(this).val();
		});

		return val;
	}

	function showTemplates() {
		var val = getSelectedValue("id");

		var selector = "#template-form";
		kaskelot.sp.ui.formutils.getAndShowPostForm({
			params: {
				formName: "TemplateForm",
				idList: val
			},
			selector: selector,
			openFunction: function () {
				$(".ui-dialog-buttonset .ui-button:first").hide();
				$("#IdList").val(val);
				$("#byggnad-render").hide();
				$("#person-render").hide();
				$("#valdistrikt-render").show();
			},
			okFunction: function () {
				$(selector).dialog("close");
			}
		});
	}

	function createDocument() {
		if ($("#template-form #TemplateId").val() === "")
			return;

		$("#template-form").block();

		var selector = "#template-form";
		var prog = kaskelot.sp.ui.formutils.getObject(selector);

		var method = "RenderValdistriktDocument";

		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientDocumentService.svc/" + method,
			data: JSON.stringify(prog),
			type: "POST",
			processData: false,
			contentType: "application/json",
			dataType: "json",
			success: function (resp) {
				if (resp[method + "Result"].HasError) {
					kaskelot.sp.ui.formutils.showError(selector, resp[method + "Result"].ErrorMessage);
				}
				else {
					$("#file-link").attr("href", "../../" + resp[method + "Result"].Data);
					$("#file-link").show();
				}
				$("#template-form").unblock();
			},
			error: function (xhr) {
				kaskelot.sp.ui.formutils.showError(selector, xhr.responseText);
				$("#template-form").unblock();
			}
		});
	}

	return {
		init: init,
		getList: getList,
		getForsamlingar: getForsamlingar,
		showTemplates: showTemplates,
		createDocument: createDocument
	};
}();